###############################################################################
# Bazel now uses Bzlmod by default to manage external dependencies.
# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
#
# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
###############################################################################

module(
    name = "or-tools",
    version = "9.14",
)

# see https://registry.bazel.build/
bazel_dep(name = "abseil-cpp", version = "20250512.0")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "bzip2", version = "1.0.8.bcr.2")
bazel_dep(name = "contrib_rules_jvm", version = "0.28.0")
bazel_dep(name = "eigen", version = "3.4.0.bcr.3")
bazel_dep(name = "fuzztest", version = "20250214.0")
bazel_dep(name = "riegeli", version = "0.0.0-20241218-3385e3c") # otherwise fuzztest use a borken version
bazel_dep(name = "gazelle", version = "0.43.0")
bazel_dep(name = "glpk", version = "5.0.bcr.4")
bazel_dep(name = "google_benchmark", version = "1.9.2")
bazel_dep(name = "googletest", version = "1.17.0")
bazel_dep(name = "highs", version = "1.11.0")
bazel_dep(name = "platforms", version = "0.0.11")
bazel_dep(name = "protobuf", version = "31.1")
bazel_dep(name = "pybind11_abseil", version = "202402.0")
bazel_dep(name = "pybind11_bazel", version = "2.13.6")
bazel_dep(name = "pybind11_protobuf", version = "0.0.0-20240524-1d7a729")
bazel_dep(name = "re2", version = "2024-07-02.bcr.1")
bazel_dep(name = "rules_cc", version = "0.1.1")
bazel_dep(name = "rules_go", version = "0.53.0")
bazel_dep(name = "rules_java", version = "8.11.0")
bazel_dep(name = "rules_jvm_external", version = "6.7")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_python", version = "1.2.0")
bazel_dep(name = "scip", version = "9.2.2")
bazel_dep(name = "swig", version = "4.3.0")
bazel_dep(name = "zlib", version = "1.3.1.bcr.5")

git_override(
    module_name = "pybind11_bazel",
    commit = "2b6082a4d9d163a52299718113fa41e4b7978db5",
    patch_strip = 1,
    patches = ["//patches:pybind11_bazel.patch"],
    remote = "https://github.com/pybind/pybind11_bazel.git",
)

git_override(
    module_name = "pybind11_abseil",
    commit = "70f8b693b3b70573ca785ef62d9f48054f45d786",
    patch_strip = 1,
    patches = ["//patches:pybind11_abseil.patch"],
    remote = "https://github.com/pybind/pybind11_abseil.git",
)

git_override(
    module_name = "pybind11_protobuf",
    commit = "f02a2b7653bc50eb5119d125842a3870db95d251",
    #patch_strip = 1,
    #patches = ["//patches:pybind11_protobuf.patch"],
    remote = "https://github.com/pybind/pybind11_protobuf.git",
)

SUPPORTED_PYTHON_VERSIONS = [
    "3.9",
    "3.10",
    "3.11",
    "3.12",
    "3.13",
]

DEFAULT_PYTHON = "3.11"

python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)

[
    python.toolchain(
        ignore_root_user_error = True,  # needed for CI
        is_default = version == DEFAULT_PYTHON,
        python_version = version,
    )
    for version in SUPPORTED_PYTHON_VERSIONS
]

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")

[
    pip.parse(
        hub_name = "ortools_pip_deps",
        python_version = python_version,
        requirements_lock = "//bazel:ortools_requirements.txt",
    )
    for python_version in SUPPORTED_PYTHON_VERSIONS
]

[
    pip.parse(
        hub_name = "ortools_notebook_deps",
        python_version = python_version,
        requirements_lock = "//bazel:notebook_requirements.txt",
    )
    for python_version in SUPPORTED_PYTHON_VERSIONS
]

use_repo(pip, pip_deps = "ortools_pip_deps")
use_repo(pip, "ortools_notebook_deps")

JUNIT_PLATFORM_VERSION = "1.9.2"

JUNIT_JUPITER_VERSION = "5.9.2"

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
    artifacts = [
        "net.java.dev.jna:jna:5.14.0",
        "com.google.truth:truth:0.32",
        "org.junit.platform:junit-platform-launcher:%s" % JUNIT_PLATFORM_VERSION,
        "org.junit.platform:junit-platform-reporting:%s" % JUNIT_PLATFORM_VERSION,
        "org.junit.jupiter:junit-jupiter-api:%s" % JUNIT_JUPITER_VERSION,
        "org.junit.jupiter:junit-jupiter-params:%s" % JUNIT_JUPITER_VERSION,
        "org.junit.jupiter:junit-jupiter-engine:%s" % JUNIT_JUPITER_VERSION,
    ],
    repositories = [
        "https://repo1.maven.org/maven2",
    ],
)
use_repo(maven, "maven")

go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.22.4")

go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
go_deps.module(
    path = "github.com/golang/glog",
    sum = "h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=",
    version = "v1.2.2",
)
go_deps.module(
    path = "github.com/golang/protobuf",
    sum = "h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=",
    version = "v1.5.4",
)
go_deps.module(
    path = "github.com/google/go-cmp",
    sum = "h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=",
    version = "v0.6.0",
)
go_deps.module(
    path = "google.golang.org/protobuf",
    sum = "h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=",
    version = "v1.36.5",
)
go_deps.module(
    path = "golang.org/x/xerrors",
    sum = "h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=",
    version = "v0.0.0-20191204190536-9bdfabe68543",
)
use_repo(
    go_deps,
    "com_github_golang_glog",
    "com_github_golang_protobuf",
    "com_github_google_go_cmp",
    "org_golang_google_protobuf",
    "org_golang_x_xerrors",
)
